package com.bbva.gptf.back.dominio;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;

import org.springframework.roo.addon.dbre.RooDbManaged;
import org.springframework.roo.addon.entity.RooEntity;
import org.springframework.roo.addon.javabean.RooJavaBean;
import org.springframework.roo.addon.tostring.RooToString;

@RooJavaBean
@RooToString
@RooEntity(versionField = "", table = "TGPT004_FICHERO", schema = "DBSGPT")
@RooDbManaged(automaticallyDelete = true)
public class Tgpt004Fichero {
	public static void activarCargaFichero(final BigDecimal cdFichero) {
		final Tgpt004Fichero fichero = Tgpt004Fichero
				.findTgpt004Fichero(cdFichero);
		fichero.setStFichero(new BigDecimal(1));
		fichero.merge();
	}

	public static void desactivarCargaFichero(final BigDecimal cdFichero) {
		final Tgpt004Fichero fichero = Tgpt004Fichero
				.findTgpt004Fichero(cdFichero);
		fichero.setStFichero(new BigDecimal(0));
		fichero.merge();
	}

	public static List<Tgpt004Fichero> findTgpt004FicheroCargaInicial() {
		return entityManager()
				.createQuery(
						"SELECT o FROM Tgpt004Fichero o WHERE o.stCargaInicio = 1 ORDER BY o.nuOrdenCarga ASC",
						Tgpt004Fichero.class).getResultList();
	}
	
	public static List<Tgpt004Fichero> findTgpt004FicheroCargaIntradia() {
		return entityManager()
				.createQuery(
						"SELECT o FROM Tgpt004Fichero o WHERE o.stCargaIntradia = 1 ORDER BY o.nuOrdenCarga ASC",
						Tgpt004Fichero.class).getResultList();
	}

	public static List<Tgpt004Fichero> obtieneFicherosByCdFuenteInsumos(
			final BigDecimal cdFuente) {
		if (cdFuente == null) {
			return new ArrayList<Tgpt004Fichero>();
		}
		try {

			final StringBuffer qlString = new StringBuffer(
					"FROM Tgpt004Fichero f ");
			qlString.append("WHERE f.cdFuente.cdFuente = :cdFuente ");
			qlString.append("AND f.cdFichero in(");
			qlString.append(" SELECT c.cdCarga.cdFichero.cdFichero ");
			qlString.append(" FROM Tgpt048Carga c)");
			return entityManager()
					.createQuery(qlString.toString(), Tgpt004Fichero.class)
					.setParameter("cdFuente", cdFuente).getResultList();
		} catch (final Exception e) {
			// TODO: handle exception
		}

		return new ArrayList<Tgpt004Fichero>();
	}

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "sq_fichero")
	@SequenceGenerator(name = "sq_fichero", sequenceName = "SQ_FICHERO")
	@Column(name = "CD_FICHERO")
	private BigDecimal cdFichero;
}
